import globals from "globals";
import pluginJs from "@eslint/js";
import pluginVue from "eslint-plugin-vue";

export default [
  {ignores: ['**/node_modules/','.git/','dist/','*config.js','public/','src/assets/*']},
  {files: ["**/*.{js,mjs,cjs,vue}"]},
  {languageOptions: { globals: globals.browser}},
  pluginJs.configs.recommended,
  ...pluginVue.configs["flat/essential"],
  {
    /**
     * "off" 或 0  关闭规则
     * "warn" 或 1  规则作为警告, 不影响代码执行
     * "error" 或 2 规则作为一个错误, 代码不能执行
     */
    rules: {
      //eslint(https://eslint.bootcss.com/docs/rules/)
      'no-var':'error', //要求使用1et或const 而不是 var
      'no-multiple-empty-lines': ['warn',{max:1}], //不允许多个空行
      'no-console': process.env.VITE_NODE_ENV ==='production' ? 'error' : 'off',
      'no-debugger': process.env.VITE_NODE_ENV === 'production' ? 'error' : 'off',
      'no-unexpected-multiline':'error', //禁止空余的多行
      'no-useless-escape':'off', //禁止不必要的转义字符
      'semi': ['error','never'], // 禁止使用分号
      'no-unused-vars': 'error', //禁止定义未使用的变量
      'quotes': ['error', 'single', { // 只能使用单引号和模版字符串
        'avoidEscape': true,
        'allowTemplateLiterals': true
      }],
      'indent': [2, 2, { // 空2格
        'SwitchCase': 1
      }],
      //eslint-plugin-vue (https://eslint.vuejs.org/rules/)
      'vue/multi-word-component-names':'off', //要求组件名称始终为“_”链接的单词
      'vue/script-setup-uses-vars':'error', //防止<script setup>使用的变量<template>被标记为未使用
      'vue/no-mutating-props':'off', //不允许组件 prop的改变'
      'vue/attribute-hyphenation':'off', //对模板中的自定义组件强制执行属性命名样式
    }
  }
];